/*

Author   : chaos

FileName : mutable

Date     : 11/08/17 23:58:43

*/
#include <iostream>
#include <cstring>
using namespace std;

class String
{
    private:
        char * string;
        int len;
        mutable int cursor;
    public:
        String(char * i_string);
        char get_current_char() const;
        int get_cursor() const;
        void show_string();
};

String::String(char * i_string):len(strlen(i_string)),cursor(1)
{
    string = new char [len];
    strcpy(string, i_string);
}

char String::get_current_char() const
{
    int cur_cursor = cursor;

    cursor ++;

    if(cursor > len)
        cursor = 1;

    return *(string + cur_cursor - 1);
}

int String::get_cursor() const
{
    return cursor;
}
int main(int argc ,char *argv[])
{
    String A_String("The C++ Bible");
    const String B_String("C++ Explained");
    int i;

    for (i=1; i<3; i++)
    {
        cout << "A_String [" << A_String.get_cursor() << "]=";
        cout << A_String.get_current_char() << endl;
    }
    cout << endl;

    for(i=1; i<=3; i++){
        cout << "B_String[" << B_String.get_cursor() << "]=";
        cout << B_String.get_current_char() << endl;
    }
    return 0;
}
